<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>

<script>

    //默认参数
    function fn1(name = "tom",age = 1){
        console.log(naem+','+age);
    }
    fn1('Shane');

    //rest 参数 ... 扩展运算符

    //es6 箭头函数

    //普通匿名函数
    //声明式函数
    function fn(a,b){
        console,log('hello',a,b);
    }

    fu()

    //匿名函数
    a = function(){
        return f1
    }

    //es6 可以改写匿名函数为箭头函数，初步理解箭头函数是匿名函数的简写
    
    // b = ()=>{
    //     console.log(1,2,3);
    // }

    /*
    b = (a,b)=>{
        console.log(a,b);
    }

    b(2,3)

    const obj = {
        run:function(){

        },
        run:()=>{

        }
    }

    const obj2 = {
        run(){

        }
    }
*/
    //箭头函数的特征
    //1 如果箭头函数参数只有一个，那么括号是可以省略的
    b = a=>{
        console.log(b)
    }
    //2 如果有默认参数，括号不可以省略
    b = (a=5) =>{
        console.log(a);
    }

    b()
    //3 在箭头函数中，如果只有一行代码，且是return，也就是回调函数，那么大括号和return
    b = (a=5) => a

    console.log(b(10));

/*
    res = arr2.find(function(item){
        console.log(item);
        return item > 4
    })

    res = arr2.find(item=>item > 4
    )
*/

    //箭头函数会影响this指向

    // console.log(this);

    let obj = {
        name:'Shane',
        run(){
            console.log(this);
        },
        watch:()=>{
            console.log(this);
        }
    }
    console.log(obj);
    abj.run()


    //在匿名函数在，function 里面this 指向函数调用者
    //箭头函数中this 指向函数声明处，通常是window
    obj.watch()

</script>

</html>

